perm filename TRACE[P,JRA] blob
sn#203343 filedate 1976-02-23 generic text, type T, neo UTF8
(QUOTE (THIS TRACE PACKAGE IS DEDICATED TO NANCY))
(DEF TRACE
(LAMBDA ($FN $FLAG $INFORM $OUTFORM)
(PROG ($A $B $C)
(COND ((NUMBP $FLAG) NIL) (T (SETQ $FLAG 0)))
(SETQ TRACELIST (CONS $FN TRACELIST))
(SETQ $A (GETD $FN))
(SETQ $B (COPY (CADR $A)))
(RPLACD (CDR $A)
(LIST
(LIST (QUOTE PROG)
(QUOTE ($RESULT))
(LIST (QUOTE PATOM)
(LIST (QUOTE QUOTE)
(QUOTE "ENTERING ")))
(LIST (QUOTE PRINT)
(LIST (QUOTE QUOTE) $FN))
(QUOTE (TERPR))
(COND
((OR (EQ $FLAG 2) (EQ $FLAG 4))
(LIST (QUOTE MAPC)
(QUOTE
(FUNCTION
(LAMBDA ($D)
(PROG NIL
(PRINT $D)
(PATOM (QUOTE =))
(PRINT (EVAL $D))
(TERPR)))))
(LIST (QUOTE QUOTE) $B))))
(COND
((LESSP 2 $FLAG)
(QUOTE (BREAK (QUOTE TRACE)))))
$INFORM
(LIST (QUOTE SETQ)
(QUOTE $RESULT)
(CAR (CDDR $A)))
(QUOTE (PATOM (QUOTE "RETURNING FROM ")))
(LIST (QUOTE PRINT)
(LIST (QUOTE QUOTE) $FN))
(QUOTE (PATOM (QUOTE " ")))
(COND
((OR (EQ $FLAG 2) (EQ $FLAG 4))
(QUOTE (PRINT $RESULT))))
$OUTFORM
(COND
((LESSP 2 $FLAG)
(QUOTE (BREAK (QUOTE TRACE)))))
(QUOTE (TERPR))
(QUOTE (RETURN $RESULT))))))))
(DEF UNTRACE
(LAMBDA ($FN)
(PROG ($A)
(COND ((NULL (SETQ $A (GETD $FN))) (GO ERROR))
((EQ $FN (CAR TRACELIST))
(SETQ TRACELIST (CDR TRACELIST)))
(T
(PROG (A B)
(SETQ A TRACELIST)
LOOP (SETQ B (CDR A))
(COND ((NULL B) (GO ERROR))
((EQ $FN (CAR B))
(RPLACD A (CDR B))
(RETURN)))
(SETQ A B)
(GO LOOP))))
(RPLACD (CDR $A)
(CDDR
(CADR
(CDDR (CDDR (CDDR (CDAR (CDDR $A))))))))
(RETURN)
ERROR(PRINT $FN)
(PATOM (QUOTE " WASN'T TRACED"))
(TERPR))))
(DEF UNTRACEALL
(LAMBDA NIL (MAPC (GETD (QUOTE UNTRACE)) TRACELIST)))
(DEF UNTRACEL
(NLAMBDA ($L) (MAPC (GETD (QUOTE UNTRACE)) $L)))
(DEF TRACE2
(LAMBDA ($FN) (TRACE $FN $TRACEFLAG)))
(DEF TRACEL
(NLAMBDA ($L)
(PROG ($TRACEFLAG)
(SETQ $TRACEFLAG (CAR $L))
(COND ((NUMBP $TRACEFLAG)
(MAPC (GETD (QUOTE TRACE2)) (CDR $L)))
(T (SETQ $TRACEFLAG 0)
(MAPC (GETD (QUOTE TRACE2)) $L))))))
(DEF FLUSHTRACE
(LAMBDA NIL
(PROG NIL
($FLUSHLIST *TRACEFNS)
(SETQ *TRACEFNS)
($MUMBLE NIL T)
(RECLAIM)
($MUMBLE))))
(SETQ *TRACEFNS
(QUOTE
(TRACE TRACEL
TRACE2
UNTRACE
UNTRACEL
UNTRACEALL
FLUSHTRACE)))
(QUOTE (THESE FUNCTIONS PUT UP ON UNIX BY JOHN))